CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0001
*** HOST *** 

                  0001  ; HOST Program for AMD 96-4016 Z8000 Monitor
                  0002  ;
                  0003  ; Sourced March '80 by 	Trevor Marshall
                  0004  ;			Elec Eng Dept
                  0005  ;			Uni W.A.
                  0006  ;
                  0007  ; This program was written for a Z80 CPU
                  0008  ; running a CDOS 2.17 Disk Operating System.
                  0009  ;
                  0010  ; It has been modified for 8080 CPU 
                  0011  ; but not fully tested with that CPU
                  0012  ;
                  0013  ; Most code is compatible with other CP/M
                  0014  ; systems, but will have to be tailored
                  0015  ; to the individual's hardware environment
                  0016  ;
                  0017  ; Although the AMD SYS 8/8 uses parallel
                  0018  ;  ports for handshaking the 96-4016 will also
                  0019  ;  support serial I/O and this method is
                  0020  ;  usually preferable.
                  0021  ; The AMD Monitor uses an 8 bit data word with
                  0022  ;  parity generated in software.
                  0023  ; If you cannot configure your HOST USART
                  0024  ;  to that format then you must null the 
                  0025  ;  parity generation with NOPs and the parity
                  0026  ;  checking may be defeated with a prior RET
                  0027  ; Note that the AMD SYS 8/8 appears to have a
                  0028  ;  CP/M compatible operating system
                  0029  ;
      (0005)      0030  BDOS:	EQU	5	;CDOS system call addr
      (0014)      0031  RNEXT:	EQU	14H	;Read next record
      (0015)      0032  WNEXT:	EQU	15H	;Write next record
      (0016)      0033  FCREATE: EQU	16H	;Create a file
      (000D)      0034  RESET:	EQU	0DH	;Reset CDOS
      (000F)      0035  FOPEN:	EQU	0FH	;Open a file
      (0010)      0036  FCLOSE:	EQU	10H	;Close a file
      (001A)      0037  DMA:	EQU	1AH	;Set disk buffer address
      (0086)      0038  FORMAT: EQU	86H	;Format name to FCB
      (0015)      0039  NAK:	EQU	15H	;CTL-U
      (0005)      0040  ENQ:	EQU	5	;CTL-E
      (0006)      0041  ACK:	EQU	6	;CTL-F
      (0001)      0042  SOH	EQU	1	;CTL-A
      (0002)      0043  STX:	EQU	2	;CTL-B	
      (0004)      0044  EOT:	EQU	4	;CTL-D
      (001A)      0045  EOF:	EQU	1AH	;End of file marker byte
                  0046  ;
                  0047  ;THE FOLLOWING EQUATES ARE HARDWARE DEPENDENT
                  0048  ;
      (00F7)      0049  CSTATP: EQU	0F7H	;Console driver status port
      (00F6)      0050  CDATA:	EQU	0F6H	;Console data port
      (0002)      0051  CRDA:	EQU	2	;RDA bit
      (0001)      0052  CTBE:	EQU	1	;TBE bit
                  0053  ;
      (0100)      0054  	ORG	100H
                  0055  ;
0100  318000      0056  START:	LD	SP,80H
0103  3E00        0057  	LD	A,0
0105  32DD04      0058  	LD	(FLAG),A ;Clear the file opened flag
                  0059  ; Now output system prompt to console
0108  11AD03      0060  	LD	DE,MSG
010B  0E09        0061  	LD	C,9	;Print Buffered Line
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0002
*** HOST *** 

010D  CD0500      0062  	CALL	BDOS
                  0063  ;
0110  318000      0064  MORE:	LD	SP,80H	;Reset Stack Pointer
0113  3E00        0065  	LD	A,0
0115  32DC04      0066  	LD	(CODE),A ;Clear the error code
0118  CD8402      0067  	CALL	DIALOG	;Wait for an instruction
011B  3ABA04      0068  	LD	A,(NEWCODE) ;2 locs to ease debugging
011E  32B904      0069  	LD	(CURCODE),A	;Save it
                  0070  ; Now decode the Function request type
0121  FE04        0071  	CP	A,4
0123  CA5901    R 0072  	JP	Z,OPEN
0126  FE05        0073  	CP	A,5
0128  CAA601    R 0074  	JP	Z,CLOSE
012B  FE06        0075  	CP	A,6
012D  CA2302      0076  	JP  	Z,CREATE
0130  FE07        0077  	CP	A,7
0132  CADB01      0078  	JP	Z,READ
0135  FE08        0079  	CP	A,8
0137  CA7901    R 0080  	JP	Z,WRITE
                  0081  ;
013A  C3C601      0082  	JP	N7	;If not one of the above instrs
                  0083  ;
                  0084  ; S/R to set up FCB name in FCB block from BFFR data
                  0085  ;
013D  3A2C04      0086  SETUP	LD	A,(REQBFFR) ;Fetch the drive (A - C)
0140  D640        0087  	SUB	A,40H	;A = 01 IN FCB
0142  322D04      0088  	LD	(REQBFFR+1),A ;Put drive # in FCB
0145  212D04      0089  	LD	HL,REQBFFR+1 ;Point at start of legal co
			de
0148  11BB04      0090  	LD	DE,FCB	;Point at FCB area
014B  010C00      0091  	LD	BC,12	;# of bytes in name & drive
                  0092  ;	LDIR		;Shift name to FCB
                  0093  ; implement the LDIR in 8080 code:
014E  7E          0094  L1:	LD	A,(HL)	;***** THIS CODE HAS NOT
014F  12          0095  	LD	(DE),A	;   BEEN CHECKED******
0150  23          0096  	INC	HL
0151  13          0097  	INC	DE
0152  0B          0098  	DEC	BC
0153  79          0099  	LD	A,C	;Is BC = 0
0154  B0          0100  	OR	A,B
0155  C24E01    R 0101  	JP	NZ,L1
                  0102  ;
0158  C9          0103  	RET
                  0104  ;
                  0105  ;Now try to open file
0159  0E0D        0106  OPEN:	LD	C,RESET
015B  CD0500      0107  	CALL	BDOS	;First log off all disks
015E  CD3D01      0108  	CALL	SETUP   ;Set up FCB
0161  11BB04      0109  	LD	DE,FCB
0164  0E0F        0110  	LD	C,FOPEN
0166  CD0500      0111  	CALL	BDOS	;Open file
                  0112  ; Any errors?
0169  C601        0113  	ADD	A,1	;Is a = -1 ?
016B  CAC601    R 0114  	JP	Z,N7
                  0115  ; Opened successfully, now can process read or write
016E  3EFF        0116  	LD	A,0FFH
0170  32DD04      0117  	LD	(FLAG),A ;Set opened flag
0173  CD7303      0118  	CALL	TRNS	;Acknowledge
0176  C31001    R 0119  	JP	MORE	;Get next instruction
                  0120  ;
0179  3ADD04      0121  WRITE:	LD	A,(FLAG) ;Check file is created or open
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0003
*** HOST *** 

017C  FE00        0122  	CP	A,0
017E  CAD001    R 0123  	JP	Z,N5 ;no, send error code 3
                  0124  ; Now set the DMA address to BFFR
0181  0E1A        0125  	LD	C,DMA
0183  113904      0126  	LD	DE,BFFR
0186  CD0500      0127  	CALL	BDOS
                  0128  ;
0189  11BB04      0129  	LD	DE,FCB
018C  0E15        0130  	LD	C,WNEXT
018E  CD0500      0131  	CALL	BDOS	;Write the record
0191  FE01        0132  	CP	A,1	;entry error
0193  CAD001    R 0133  	JP	Z,N5	; send code 3
0196  FE02        0134  	CP	A,2
0198  CAC601    R 0135  	JP	Z,N7	;Send code 1 if out of space
019B  FE00        0136  	CP	0	;OK
019D  C2CB01    R 0137  	JP	NZ,N8	;Send code 2 for other errors
                  0138  ; Must be OK,wait for next instruction
01A0  CD7303      0139  	CALL	TRNS
01A3  C31001      0140  	JP	MORE
                  0141  ;
01A6  3ADD04      0142  CLOSE:	LD	A,(FLAG) ;Dont close an unopened file
01A9  FE00        0143  	CP	0
01AB  CAD001    R 0144  	JP	Z,N5	;not open
01AE  0E10        0145  	LD	C,FCLOSE
01B0  11BB04      0146  	LD	DE,FCB
01B3  CD0500      0147  	CALL	BDOS
01B6  FEFF        0148  	CP	A,0FFH
01B8  CAC601    R 0149  	JP	Z,N7	;A=FF means not found
01BB  3E00        0150  	LD	A,0
01BD  32DD04      0151  	LD	(FLAG),A ;Clear the open file flag
01C0  32DC04      0152  	LD	(CODE),A ;Clr error flag
01C3  C3D501    R 0153  	JP	N10
01C6  3E01        0154  N7:	LD	A,1	;Send error code 1
01C8  C3D201    R 0155  	JP	N6
01CB  3E02        0156  N8:	LD	A,2	;Send error code 2
01CD  C3D201    R 0157  	JP	N6
01D0  3E03        0158  N5:	LD	A,3	;Send error code 3
01D2  32DC04      0159  N6:	LD	(CODE),A ;File not open or created
01D5  CD7303      0160  N10:	CALL	TRNS
                  0161  ; Omit the following for 8080 CP/M
                  0162  ;	LD	C,96H	;Call to CDOS 2.17 to turn
                  0163  ;	CALL	BDOS	; drive motors off
01D8  C31001      0164  	JP	MORE
                  0165  ;
01DB  3ADD04      0166  READ:	LD	A,(FLAG) ;Is file open ?
01DE  FE00        0167  	CP	0
01E0  C2FD01    R 0168  	JP	NZ,N2 ;Yes
01E3  0E0D        0169  	LD	C,RESET	;No,open it
01E5  CD0500      0170  	CALL	BDOS
01E8  CD3D01      0171  	CALL	SETUP
01EB  11BB04      0172  	LD	DE,FCB
01EE  0E0F        0173  	LD	C,FOPEN
01F0  CD0500      0174  	CALL	BDOS
01F3  C601        0175  	ADD	A,1
01F5  CAD001    R 0176  	JP	Z,N5   ;type 3 error, not found
01F8  3EFF        0177  	LD	A,0FFH
01FA  32DD04      0178  	LD	(FLAG),A ;Set open flag
                  0179  ; File opened now read record
01FD  0E1A        0180  N2:	LD	C,DMA	;set CDOS DMA addr to bffr
01FF  113904      0181  	LD	DE,BFFR
0202  CD0500      0182  	CALL	BDOS
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0004
*** HOST *** 

0205  0E14        0183  	LD	C,RNEXT	;read next record
0207  11BB04      0184  	LD	DE,FCB
020A  CD0500      0185  	CALL	BDOS
                  0186  ; Now process error codes
020D  FE00        0187  	CP	0	;1 = <EOF>
020F  CA1D02    R 0188  	JP	Z,M1  
                  0189  ; Must be 1, End Of File
                  0190  ; Note that this error is only returned AFTER an
                  0191  ; abortive attempt to fetch the next sector, and
                  0192  ; <EOF> within data is transferred normally, so
                  0193  ; ASM will give errors unless a QUIT instruction
                  0194  ; is used to end the source file.
0212  3E01        0195  	LD	A,1
0214  32DC04      0196  	LD	(CODE),A
0217  CD7303      0197  	CALL	TRNS	;Dont send any data
021A  C31001      0198  	JP	MORE
021D  CD0C03      0199  M1:	CALL	SEND	;Transmit normal data
0220  C31001      0200  	JP	MORE
                  0201  ;
0223  3ADD04      0202  CREATE:	LD	A,(FLAG) ;Is file open?
0226  FE00        0203  	CP	0
0228  C2D001    R 0204  	JP	NZ,N5	;Yes send error code 3
022B  0E0D        0205  	LD	C,RESET	;Log off all disks
022D  CD0500      0206  	CALL	BDOS	;Prior to directory operations
0230  CD3D01      0207  	CALL	SETUP
                  0208  ; First check if a file already exists with this name
                  0209  ; Dont delete it,as it may be a mistaken command
0233  11BB04      0210  	LD	DE,FCB
0236  0E11        0211  	LD	C,11H	;Search Directory cmd
0238  CD0500      0212  	CALL	BDOS
023B  FEFF        0213  	CP	A,0FFH	
023D  CA4602    R 0214  	JP	Z,MI3	;Entry was not found
0240  7E          0215  	LD	A,(HL)	;Fetch the first directory byte
0241  FEE5        0216  	CP	A,0E5H	;Is it erased
0243  C2D001    R 0217  	JP	NZ,N5	;No, send error
0246  0E16        0218  MI3:	LD	C,FCREATE
0248  11BB04      0219  	LD	DE,FCB
024B  CD0500      0220  	CALL	BDOS
024E  FEFF        0221  	CP	A,0FFH
0250  CAC601      0222  	JP	Z,N7	;Send error code 1
0253  CD7303      0223  	CALL	TRNS
0256  3EFF        0224  	LD	A,0FFH
0258  32DD04      0225  	LD	(FLAG),A ;Set the open flag
025B  C31001      0226  	JP	MORE
                  0227  ;
                  0228  ;
                  0229  ; S/R to accomplish I/O
                  0230  ; N.B. THESE WILL BE HARDWARE DEPENDENT
025E  DBF7        0231  CSTAT:	IN	A,CSTATP
0260  E602        0232  	AND	CRDA
0262  C8          0233  	RET	Z
0263  3EFF        0234  	LD	A,-1
0265  C9          0235  	RET
                  0236  ;
0266  CD5E02      0237  CHIN:	CALL	CSTAT
0269  CA6602    R 0238  	JP	Z,CHIN
026C  DBF6        0239  	IN	A,CDATA
026E  E67F        0240  	AND	7FH	;Strip off parity bit
0270  C9          0241  	RET
                  0242  ;
0271  DBF7        0243  CRDY:	IN	A,CSTATP
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0005
*** HOST *** 

0273  E601        0244  	AND	CTBE
0275  C8          0245  	RET	Z
0276  3EFF        0246  	LD	A,-1
0278  C9          0247  	RET
                  0248  ;
0279  F5          0249  COUT:	PUSH	AF
027A  CD7102      0250  C1:	CALL	CRDY
027D  CA7A02    R 0251  	JP	Z,C1
0280  F1          0252  	POP	AF
0281  D3F6        0253  	OUT	CDATA,A
0283  C9          0254  	RET
                  0255  ;
                  0256  ;
                  0257  ; S/R DIALOG to talk to Z8000
0284  21FFFF      0258  DIALOG: LD	HL,0FFFFH ;Load a delay value to HL
                  0259  ; We will decrement HL until 0, then switch the
                  0260  ; disk drive motors off
0287  CD5E02      0261  DI1:	CALL	CSTAT
028A  C29E02    R 0262  	JP	NZ,DIA2 ;Have input,exit motor loop
028D  2B          0263  	DEC	HL
028E  7D          0264  	LD	A,L	;No flag setting after DEC HL
028F  B4          0265  	OR	H
0290  C28702    R 0266  	JP	NZ,DI1	;Try the loop again
                  0267  ; Have now waited long enough, assume Z8000 done
                  0268  ;	LD	C,96H	;Call to CDOS 2.17 to turn
                  0269  ;	CALL	BDOS	; drive motors off
0293  C39E02    R 0270  	JP	DIA2
0296  3E15        0271  KNACK:	LD	A,NAK
0298  CD7902      0272  	CALL	COUT
029B  C38402    R 0273  	JP	DIALOG ;Service motors
029E  CD6602      0274  DIA2:	CALL	CHIN
02A1  FE05        0275  	CP	ENQ
02A3  C29602    R 0276  	JP	NZ,KNACK ;Only <ENQ> is valid
02A6  3E06        0277  ACKNL:	LD	A,ACK
02A8  CD7902      0278  	CALL	COUT
02AB  212C04      0279  RECVE:	LD	HL,REQBFFR
02AE  CD6602      0280  	CALL	CHIN
02B1  FE01        0281  	CP	SOH	;Answer should be <SOH>
02B3  C20103    R 0282  	JP	NZ,FLUSH
02B6  CD6602      0283  	CALL	CHIN	;FUNCTION REQUEST CODE 
02B9  D630        0284  	SUB	A,30H
02BB  32BA04      0285  	LD	(NEWCODE),A
                  0286  ; We will just receive chars and store them in req bffr
02BE  CD6602      0287  RECVA:	CALL	CHIN
02C1  FE04        0288  	CP	A,EOT
02C3  CAF602    R 0289  	JP	Z,RECVB	;Message ends with <EOT>
02C6  FE02        0290  	CP	A,STX
02C8  CABE02    R 0291  	JP	Z,RECVA	;Discard it
                  0292  ; Now process two hex bytes
02CB  D630        0293  	SUB	30H	;Pseudo-Hex format is used
                  0294  ; Cabt SLA C in 8080, so rewrite
02CD  37          0295  	SCF
02CE  3F          0296  	CCF
02CF  17          0297  	RLA
02D0  37          0298  	SCF
02D1  3F          0299  	CCF
02D2  17          0300  	RLA
02D3  37          0301  	SCF
02D4  3F          0302  	CCF
02D5  17          0303  	RLA
02D6  37          0304  	SCF
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0006
*** HOST *** 

02D7  3F          0305  	CCF
02D8  17          0306  	RLA
02D9  4F          0307  	LD	C,A	;Save first hex digit
02DA  CD6602      0308  	CALL	CHIN
                  0309  ;	SLA	C
                  0310  ;	SLA	C
                  0311  ;	SLA	C
                  0312  ;	SLA	C
02DD  D630        0313  	SUB	A,30H
02DF  E60F        0314  	AND	A,0FH	;Mask off upper nibble
02E1  81          0315  	ADD	A,C	;Now have Hex digit
02E2  77          0316  	LD	(HL),A
02E3  23          0317  	INC	HL
02E4  7D          0318  	LD	A,L
02E5  FE39        0319  	CP	REQBUFFEND AND 0FFH
02E7  C2BE02    R 0320  	JP	NZ,RECVA
02EA  7C          0321  	LD	A,H
02EB  FE04        0322  	CP	REQBUFFEND SHR 8
02ED  C2BE02    R 0323  	JP	NZ,RECVA
02F0  213904      0324  	LD	HL,BFFR	;Now point at data buffer
02F3  C3BE02    R 0325  	JP	RECVA
                  0326  ;
02F6  3E06        0327  RECVB:	LD	A,ACK
02F8  CD7902      0328  	CALL	COUT
02FB  C9          0329  	RET
                  0330  ;
                  0331  ;FLUSH routine to discard all input characters
                  0332  ; up to the next <EOT> after an input error
                  0333  ;
02FC  3E15        0334  FLUSHB:	LD	A,NAK
02FE  CD7902      0335  	CALL	COUT	;Send a <NAK>
0301  CD6602      0336  FLUSH:	CALL	CHIN 
0304  FE04        0337  	CP	EOT	;EOT means end of input
0306  C2FC02    R 0338  	JP	NZ,FLUSHB ;Continue to flush
0309  C38402      0339  	JP	DIALOG	;Try to fetch the data again
                  0340  ;
                  0341  ; S/R to transmit code,response & data in 96-4016 format
                  0342  ;
030C  3E05        0343  SEND:   LD	A,ENQ	
030E  CD7902      0344  	CALL	COUT	;Ask permission to send
0311  CD6602      0345  SENDA: 	CALL	CHIN
0314  FE06        0346  	CP	A,ACK	;Must reply with <ACK>
0316  C20C03    R 0347  	JP	NZ,SEND  
0319  3E01        0348  SENDB: 	LD	A,SOH
031B  CD7902      0349  	CALL	COUT
031E  3AB904      0350  	LD	A,(CURCODE)
0321  C630        0351  	ADD	A,30H
0323  CD7902      0352  	CALL	COUT	;Transmit the Function Code
0326  3E02        0353  	LD	A,STX
0328  CD7902      0354  	CALL	COUT
032B  3E30        0355  	LD	A,'0'	;Error codes, first is zero
032D  CD7902      0356  	CALL	COUT
0330  3ADC04      0357  	LD	A,(CODE) ;Second code byte
0333  C630        0358  	ADD	'0'
0335  CD7902      0359  	CALL	COUT
                  0360  ; Now transmit text
0338  213904      0361  	LD	HL,BFFR
033B  7E          0362  LP4:	LD	A,(HL)
033C  4F          0363  	LD	C,A	;Save it
033D  E6F0        0364  	AND	A,0F0H
                  0365  ; Cant SRA A in 8080,
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0007
*** HOST *** 

                  0366  ;	SRA	A
                  0367  ;	SRA	A
                  0368  ;	SRA	A
                  0369  ;	SRA	A
033F  37          0370  	SCF
0340  3F          0371  	CCF
0341  1F          0372  	RRA
0342  37          0373  	SCF
0343  3F          0374  	CCF
0344  1F          0375  	RRA
0345  37          0376  	SCF
0346  3F          0377  	CCF
0347  1F          0378  	RRA
0348  37          0379  	SCF
0349  3F          0380  	CCF
034A  1F          0381  	RRA
034B  C630        0382  	ADD	A,'0'	;Get in Pseudo-Hex 
034D  CD7902      0383  	CALL	COUT
0350  79          0384  	LD	A,C
0351  E60F        0385  	AND	A,0FH
0353  C630        0386  	ADD	'0'
0355  CD7902      0387  	CALL	COUT
0358  23          0388  	INC	HL
0359  7D          0389  	LD	A,L
035A  FEB9        0390  	CP	[BUFFEND AND 0FFH]
035C  C23B03    R 0391  	JP	NZ,LP4
035F  7C          0392  	LD	A,H	;L was equal,test H
0360  FE04        0393  	CP	A,[BUFFEND SHR 8]
0362  C23B03    R 0394  	JP	NZ,LP4
                  0395  ;Now have finished buffer
0365  3E04        0396  J4:	LD	A,EOT
0367  CD7902      0397  	CALL	COUT
                  0398  ; Now wait for <ACK>
036A  CD6602      0399  	CALL	CHIN
036D  FE06        0400  	CP	ACK
036F  C8          0401  	RET	Z
0370  C30C03    R 0402  	JP	SEND  
                  0403  ;
                  0404  ;
                  0405  ; S/R to transmit code and response only to 96-4016
                  0406  ;
0373  3E05        0407  TRNS:	LD	A,ENQ	
0375  CD7902      0408  	CALL	COUT	;Ask permission to send
0378  CD6602      0409  TRNSA:	CALL	CHIN
037B  FE06        0410  	CP	A,ACK	;Must reply with <ACK>
037D  C27303    R 0411  	JP	NZ,TRNS
0380  3E01        0412  TRNSB:	LD	A,SOH
0382  CD7902      0413  	CALL	COUT
0385  3AB904      0414  	LD	A,(CURCODE)
0388  C630        0415  	ADD	A,30H
038A  CD7902      0416  	CALL	COUT	;Transmit the Function Code
038D  3E02        0417  	LD	A,STX
038F  CD7902      0418  	CALL	COUT
0392  3E30        0419  	LD	A,'0'	;Error codes, first is zero
0394  CD7902      0420  	CALL	COUT
0397  3ADC04      0421  	LD	A,(CODE) ;Second code byte
039A  C630        0422  	ADD	'0'
039C  CD7902      0423  	CALL	COUT
039F  3E04        0424  	LD	A,EOT
03A1  CD7902      0425  	CALL	COUT
                  0426  ; Now wait for <ACK>
CROMEMCO Z80 Macro Assembler version 03.07   Nov 30, 1980  09:21:39   Page 0008
*** HOST *** 

03A4  CD6602      0427  	CALL	CHIN
03A7  FE06        0428  	CP	ACK
03A9  C8          0429  	RET	Z
03AA  C37303    R 0430  	JP	TRNS
                  0431  ;
03AD  0D0A5A38    0432  MSG:	DB	0DH,0AH,'Z8000 HOST Communication Progra
			m'
03CF  20626574    0433  	DB	' between CDOS and AMD 96-4016',0DH,0AH
03EE  0D0A2020    0434  	DB	0DH,0AH,'       '
03F7  436F6E74    0435  	DB	'Contact Trevor Marshall for operating'
041C  2070726F    0436  	DB	' proceedures.',0DH,0AH,'$'
042C  (000D)      0437  REQBFFR DS	13
      (0439)      0438  REQBUFFEND EQU	$
0439  (0080)      0439  BFFR:	DS	128
      (04B9)      0440  BUFFEND EQU 	$
04B9  (0001)      0441  CURCODE DS	1	;Current operation code
04BA  (0001)      0442  NEWCODE DS	1	;New operation code
04BB  (0021)      0443  FCB:	DS	33	;FCB area
04DC  (0001)      0444  CODE    DS	1	;Operation status code
04DD  (0001)      0445  FLAG	DS	1	;0 means file is NOT OPEN
04DE  00          0446  	NOP
04DF  (0100)      0447  	END 	START

Errors		   0
Range Count	  41
Parity Count	   0

